#include <stdio.h>

int main(int argc, char const *argv[])
{
    while(1)
    {
        if()
        {
            for()
            {
                int ret = f();
                if(ret == err1)
                {
                    goto err1;
                }
                if(ret == err2)
                {
                    goto err2;
                }
            }
        }
    }


err1:
    printf("%d\n", __LINE__); // 输出当前行号

err2:
    printf("%d\n", __LINE__); // 输出当前行号
    printf("%d\n", __LINE__); // 输出当前行号

    // 1 - 100
    // int n = 1;
    // while(n <= 100) // 条件
    // {
    //     if(n%2 == 0)
    //     {
    //         n++;
    //         continue; // 继续下一次循环，跳过剩下的所有语句
    //     }

    //     printf("%d\t", n);
    //     n++;

    //     if(n > 10)
    //         break;  // 跳出当层循环
    // }
    // printf("\n");

    // // 至少执行一遍
    // int m = 1000;
    // do{
    //     printf("%d\t", m);
    //     m++;
    // }
    // while(m <= 100); // 条件
    // printf("\n");

    // 1 - 100
    for(int k=1; k <= 100; k++) // 条件
    {
        printf("%d\t", k);

        while(1)
        {
            ...
            break; // 当层
            goto err1;
        }

        ...
        ...
        ...
    }
    printf("\n");

    // const int x = 100;
    // int const y = 100;

    // int a = 5;
    // const int m = 2; // C语言中，不能用const来定义常量

    switch(a) // 整型数据
    {
    case 1: // 入口标签，只管进来
        printf("one\n");
        break;  // 跳出switch语句

    case 'a': 
        printf("two\n");
        break;  // 跳出switch语句

    case 3 ... 10:
    case 30 ... 100:
        printf("10以下的整数\n");
        break;  // 跳出switch语句

    default:
        printf("不认识!\n");
    }

err2:
    ...
err23:
    ..
    // if(a == 1)
    // {
    //     printf("one\n");
    // }
    // else if(a == 2)
    // {
    //     printf("two\n");
    // }
    // else if(a == 3)
    // {
    //     printf("three\n");
    // }

    return 0;
}
